//#include "Stack.h"
//
//Stack::Stack(int n)
//{
//	STDatatype* tmp = (STDatatype*)malloc(sizeof(STDatatype)*n);
//	if (tmp == nullptr)
//	{
//		perror("malloc");
//		return;
//	}
//	_arr = tmp;
//	_capacity = n;
//	_top = 0;
//}
//
//
//Stack::Stack(Stack& s1)
//{
//	STDatatype* ret = (STDatatype*)malloc(sizeof(STDatatype) * s1._capacity);
//	if (ret == nullptr)
//	{
//		perror("malloc");
//		return;
//	}
//	_arr = ret;
//	memcpy(_arr, s1._arr, sizeof(STDatatype) * s1._top);
//	_capacity = s1._capacity;
//	_top = s1._top;
//}
//
//void Stack::Push(STDatatype x)
//{
//	if (_top == _capacity)
//	{
//		int newcapacity = _capacity * 2;
//		STDatatype* ret = (STDatatype*)realloc(_arr, sizeof(STDatatype) * newcapacity);
//		if (ret == NULL)
//		{
//			perror("realloc");
//			return;
//		}
//		_arr = ret;
//		_capacity = newcapacity;
//	}
//	_arr[_top++] = x;
//}
//
//int Stack::Empty()
//{
//	return _top == 0;
//}
//
//STDatatype Stack::Top()
//{
//	assert(!Empty());
//	return _arr[_top - 1];
//}
//
//Stack::~Stack()
//{
//	if (_arr)
//	{
//		free(_arr);
//		_arr = nullptr;
//	}
//	_top = _capacity = 0;
//}
//
//void Stack::Pop()
//{
//	assert(_top > 0);
//	_top--;
//}